Test Classes এবং Test Methods এর ব্যবহার

Computer Programming - এপেক্স (Apex) Apex Unit Testing (Apex Unit Testing) |
265
265

Test Classes এবং Test Methods Apex কোডের কার্যকারিতা যাচাই করতে ব্যবহৃত হয়। Salesforce-এ ইউনিট টেস্টিংয়ের জন্য Test Classes এবং Test Methods তৈরি করা হয়, যা কোডের সঠিকতা এবং গভর্নর লিমিটের মধ্যে থেকে কোডের কার্যকারিতা নিশ্চিত করে।


Test Classes এবং Test Methods এর মূল উদ্দেশ্য

  1. কোডের সঠিকতা যাচাই করা: Test Classes এবং Test Methods কোডের নির্ভুলতা নিশ্চিত করে, যা কোডের গুণগত মান উন্নত করে।
  2. ত্রুটি সনাক্তকরণ ও প্রতিরোধ: ডেপ্লয়মেন্টের আগে ত্রুটি সনাক্ত করতে সহায়ক।
  3. গভর্নর লিমিট মেনে চলা: টেস্ট মেথডের মাধ্যমে গভর্নর লিমিটের মধ্যে কোড কাজ করছে কিনা তা যাচাই করা যায়।
  4. কোড কাভারেজ নিশ্চিত করা: Salesforce-এ ডেপ্লয়মেন্টের জন্য ৭৫% কোড কাভারেজ নিশ্চিত করা প্রয়োজন, যা Test Classes ও Methods দিয়ে অর্জন করা যায়।

Test Classes এর গঠন

Test Class তৈরি করতে @isTest অ্যানোটেশন ব্যবহার করা হয়, যা Salesforce-কে নির্দেশ করে এটি একটি টেস্ট ক্লাস। Test Class সাধারণত public বা global হিসাবে ডিফাইন করা হয়।

@isTest
public class TestClassName {
    // Test methods go here
}
  • @isTest: এটি টেস্ট ক্লাস ও মেথড নির্দেশ করতে ব্যবহৃত হয়।
  • public class: Test Class সাধারণত public বা global হিসেবে ডিফাইন করা হয়।

Test Methods এর গঠন

Test Methods টেস্ট ক্লাসের মধ্যে ডিফাইন করা হয় এবং @isTest বা testMethod ব্যবহার করা হয়। Test Method-এ Assertions ব্যবহার করে কাঙ্খিত ফলাফল যাচাই করা হয়।

@isTest
public class TestClassName {
    @isTest
    static void testMethod1() {
        // টেস্ট কোড এবং Assertions
    }
}
  • @isTest বা testMethod: এটি টেস্ট মেথডে ব্যবহৃত হয়, যা Test Method হিসেবে পরিচিত।
  • static: Test Method অবশ্যই static হতে হবে।

Test Data Creation

Test Methods সাধারণত টেস্টিংয়ের জন্য নিজস্ব ডেটা তৈরি করে, যা Production ডেটা ব্যবহার এড়াতে সাহায্য করে। Apex টেস্ট ক্লাসে তৈরি ডেটা মূল ডেটাবেসে জমা হয় না এবং তা সম্পূর্ণ আলাদা থাকে।

উদাহরণ: Test Data Creation

@isTest
public class AccountTest {
    @isTest
    static void testAccountCreation() {
        // টেস্ট ডেটা তৈরি
        Account acc = new Account(Name = 'Test Account');
        insert acc;

        // Assertions
        Account fetchedAcc = [SELECT Name FROM Account WHERE Id = :acc.Id];
        System.assertEquals('Test Account', fetchedAcc.Name, 'Account name should match');
    }
}
  • Test Data Creation: Test Method-এ নতুন Account রেকর্ড তৈরি করা হয়েছে, যা Test Database-এ সংরক্ষিত হয়।
  • System.assertEquals: Assertions ব্যবহার করে Account নাম যাচাই করা হয়েছে।

Test.startTest() এবং Test.stopTest() এর ব্যবহার

Test.startTest() এবং Test.stopTest() Salesforce-এ গভর্নর লিমিট রিফ্রেশ করে এবং Asynchronous প্রসেস ট্রিগার করার জন্য ব্যবহৃত হয়।

Test.startTest() এবং Test.stopTest() উদাহরণ

@isTest
public class AsyncTestExample {
    @isTest
    static void testFutureMethod() {
        Test.startTest();
        FutureExample.processFuture(); // Future Method কল
        Test.stopTest();
        
        // Assertions
        System.assert(true, 'Future method executed successfully');
    }
}
  • Test.startTest(): Async প্রসেস শুরু করার আগে Governor Limit রিফ্রেশ করে।
  • Test.stopTest(): Async প্রসেস চালানোর পরে Governor Limit বন্ধ করে।

Assertions এর ব্যবহার

Assertions টেস্ট রেজাল্ট যাচাই করতে ব্যবহৃত হয়, যা System.assertEquals(), System.assertNotEquals() এবং System.assert() মেথড ব্যবহার করে ফলাফল যাচাই করে। Assertions কোডের প্রত্যাশিত আউটপুট এবং আসল আউটপুটের মধ্যে মিল চেক করে।

উদাহরণ: Assertions

@isTest
public class AccountTest {
    @isTest
    static void testAccountName() {
        Account acc = new Account(Name = 'Sample Account');
        insert acc;

        Account fetchedAcc = [SELECT Name FROM Account WHERE Id = :acc.Id];
        System.assertEquals('Sample Account', fetchedAcc.Name, 'The account name should match');
    }
}
  • System.assertEquals: টেস্টিংয়ের জন্য রেকর্ডের নাম যাচাই করা হয়েছে, যা প্রত্যাশিত ফলাফল নিশ্চিত করে।

ভালো অনুশীলন

  1. যতটা সম্ভব বিভিন্ন কেস টেস্ট করুন: সাধারণ কেস এবং প্রান্তিক কেসসহ বিভিন্ন কেস পরীক্ষা করুন।
  2. Assertions ব্যবহার করুন: প্রত্যেক Test Method-এ Assertions যুক্ত করুন, যা টেস্টিংয়ের নির্ভুলতা নিশ্চিত করে।
  3. Test.startTest() এবং Test.stopTest() ব্যবহার করুন: Async প্রসেস ট্রিগার এবং গভর্নর লিমিট রিফ্রেশের জন্য Test.startTest() এবং Test.stopTest() ব্যবহার করুন।
  4. Code Coverage নিশ্চিত করুন: ১০০% কোড কাভারেজের লক্ষ্য রাখুন, যাতে ডেপ্লয়মেন্ট সহজ হয়।
  5. Exception Handling টেস্ট করুন: কোডে Exception Handling সঠিকভাবে কাজ করছে কিনা তা টেস্ট করুন।

Test Class এবং Test Method এর উদাহরণ

নিচে একটি Test Class এবং Test Method-এর পূর্ণ উদাহরণ দেয়া হলো:

public class AccountManager {
    public static void updateAccountIndustry(List<Id> accountIds) {
        List<Account> accounts = [SELECT Id, Industry FROM Account WHERE Id IN :accountIds];
        for (Account acc : accounts) {
            acc.Industry = 'Technology';
        }
        update accounts;
    }
}

@isTest
public class AccountManagerTest {
    @isTest
    static void testUpdateAccountIndustry() {
        // Test data creation
        Account acc = new Account(Name = 'Test Account');
        insert acc;

        // Method call and testing
        List<Id> accountIds = new List<Id>{acc.Id};
        AccountManager.updateAccountIndustry(accountIds);

        // Record refresh and validation
        Account updatedAcc = [SELECT Industry FROM Account WHERE Id = :acc.Id];
        System.assertEquals('Technology', updatedAcc.Industry, 'Industry field should be updated to Technology');
    }
}

সারসংক্ষেপ

Test Classes এবং Test Methods Apex ইউনিট টেস্টিংয়ের প্রধান উপাদান, যা কোডের সঠিকতা যাচাই করে এবং গভর্নর লিমিটের মধ্যে কোডের কার্যকারিতা নিশ্চিত করে। Assertions, Test.startTest(), এবং Test.stopTest() সহ বিভিন্ন টুল ব্যবহার করে Test Classes এবং Test Methods উন্নত এবং কার্যকরী করা যায়, যা Salesforce ডেভেলপমেন্টে একটি নির্ভুল এবং স্থিতিশীল পরিবেশ নিশ্চিত করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion